package com.none.web.service.user;

import javax.servlet.http.HttpSession;

import com.none.core.model.Pager;
import com.none.web.model.TUser;
import com.none.web.model.TUserApp;

/**
 * 用户管理Service
 * 
 * @author Summer
 * 
 */
public interface IUserService {

	/**
	 * 新增用户
	 * 
	 * @return
	 */
	public Object addUser(TUserApp user) throws Exception;

	/**
	 * 修改用户
	 * 
	 * @return 编辑后的用户
	 * @param 用户信息
	 */
	public Object editUser(TUser user) throws Exception;

	/**
	 * 删除用户
	 * 
	 * @return
	 */
	public boolean delUser(String id) throws Exception;

	/**
	 * 用户列表
	 * 
	 * @param pager
	 *            分页参数
	 * @param keyword
	 *            搜索关键词
	 * 
	 * @return
	 */
	public Object listUser(Pager pager, String username, String code, String status);

	/**
	 * 用户激活
	 * 
	 * @param userName
	 *            用户名
	 * @param password
	 *            密码
	 * @param code
	 *            激活码
	 * @return TUserApp app用户信息
	 * 
	 * @throws Exception
	 */
	public TUserApp mergeActiveUser(String userName, String password, String code, String udid) throws Exception;

	/**
	 * 用户登录
	 * 
	 * @param userName
	 *            用户名
	 * @param password
	 *            密码
	 * 
	 * @return TUser 用户信息
	 * 
	 * @throws Exception
	 */
	public TUserApp mergeLoginUser(String userName, String password, String udid) throws Exception;

	/**
	 * 重置用户
	 * 
	 * @param userName
	 *            用户名
	 * 
	 * @return TUser 用户信息
	 * 
	 * @throws Exception
	 */
	public TUser mergeResetUser(String userName) throws Exception;

	/**
	 * 修改用户密码
	 * 
	 * @param userName
	 *            用户名
	 * @param oldPassword
	 *            旧密码
	 * @param password
	 *            新密码
	 * @return 用户信息
	 * @throws Exception
	 */
	public TUserApp resetUserPassword(String userName, String oldPassword, String password) throws Exception;

	/**
	 * 有权限用户列表
	 * 
	 * @param pager
	 *            分页参数
	 * @param keyword
	 *            搜索关键词
	 * 
	 * @return
	 */
	public Object listConsoleUser(Pager pager, String username);

	/**
	 * 新增用户
	 * 
	 * @return
	 */
	public Object addConsoleUser(TUser user) throws Exception;

	/**
	 * 权限用户登录
	 * 
	 * @param userName
	 *            用户名
	 * @param password
	 *            密码
	 * 
	 * @return TUser
	 * @throws Exception
	 */
	public TUser mergeLoginConsoleUser(String userName, String password,HttpSession session) throws Exception;

	/**
	 * 统计所有用户
	 * 
	 * @return
	 */
	public Object countAllUser() throws Exception;

	/**
	 * 得到权限用户的所有信息
	 * 
	 * @param userId
	 * @return
	 */
	public Object getConsoleUser(String userId) throws Exception;

	/**
	 * 创建新的password
	 * 
	 * @return
	 */
	public Object getNewUserPassword() throws Exception;

	/**
	 * 修改权限用户信息
	 * 
	 * @param user
	 * @return
	 */
	public Object editConsoleUser(TUser user) throws Exception;

	/**
	 * 修改用户状态
	 * 
	 * @return
	 */
	public Object editUserState(String userId, int state) throws Exception;
	
	/**
	 * APP用户激活
	 * 需要前端传过来用户信息及扫描二维码获得数据
	 * 将传过来的二维码与staffId加密后进行对比，如果结果一致，则添加该用户到数据库，反之不能添加该用户
	 * @return Object
	 * @throws Exception
	 * @author Bing  2014-11-14 19:49
	 */

	public Object activeUserByCompareCode(TUserApp userApp,String staffId,String code,String udid) throws Exception;

	/**
	 * 查询用户
	 */
	public  Object getObjectById(Class<?> cls,String id) throws Exception ;
	
	/**
	 * 激活二维码
	 * @author Bing  2014-11-21
	 */
	public Object activeQRCode(String code,String udid) throws Exception;
	
	/**
	 * 二维码激活用户后设置用户密码
	 * @author Bing 2014-11-21
	 */
	public TUserApp activeSetPassword(String staffId,String userName,String password,String udid) throws Exception;
	/**
	 * forget password QR code
	 * @author William  2014-12-08
	 */
	public Object forgetPasswordQRCode(String code) throws Exception;
	
	/**
	 * forget set password
	 * @author William  2014-12-08
	 */
	public TUserApp activeForgetSetPassword(String staffId,String password) throws Exception;
	
	/**
	 * change device QR code
	 * @author William  2014-12-08
	 */
	public Object activeChangeDeviceQRCode(String code,String udid) throws Exception;
	///**
	// * 设置推送信息，push_id    device_type   udid
	// * @author Dave  2015-7-02
	// */
	//public String setPushInfo(String udid,String push_id,String device_type) throws Exception;
	/**
	 * 保存用户百度云推送相关消息
	 * @param udid
	 * @param channelId
	 * @param baiduUserId
	 * @param device_type
	 * @return
	 * @throws Exception
	 */
	public String setPushInfo(String udid,String channelId,String baiduUserId,String device_type) throws Exception;

}
